/**
 * 
 */
package com.cuc.platform.core.dao.baseInfo;

import java.util.List;

import org.springframework.dao.DataAccessException;

import com.cuc.platform.core.domain.baseInfo.Attr;
import com.cuc.platform.core.service.ServiceException;

/**
 * @author peepul
 *
 * 公共属性Dao
 */
public interface AttrDao {
	
	/**
	 * 根据AttrType id获取对应的Attr对象集合
	 */
	public List<Attr> getAttrsByType(Long attrTypeId);
	
	/**
	 * 根据id标识获取Attr对象
	 * 
	 * @param id
	 * @return Attr
	 */
	public Attr getAttr(Long id);
	
	/**
	 * 新增Attr
	 * 
	 * @param Attr
	 */
	public void insertAttr(Attr attr) throws DataAccessException;
	
	/**
	 * 更新Attr对象
	 * 
	 * @param Attr
	 * @throws ServiceException
	 */
	public void updateAttr(Attr attr) throws DataAccessException;
	
	/**
	 * 根据id删除Attr对象
	 * 
	 * 注：删除成功返回值为1，如没找到要删除的数据返回0，如果删除出错，则产生异常
	 * @param id
	 */
	public int delAttr(Long id) throws DataAccessException;	
	
	/**
	 * 根据attType id，删除Attr中关联的所有数据
	 * 
	 * 注：如果有业务表对其进行了引用，且数据库级做了外键限制，删除操作会抛出异常，不能删除
	 */
	public int delAttrsByTypeId(Long attrTypeId) throws DataAccessException;
}
